# -*- encoding:utf-8 -*-
# @Time: 2022/11/9 17:30
# @Author :xibin
# @Email: xibin@maqu. com
# @File: modelsMiXin.py
# @Software: PyCharm

from django.db import models

class DateTimeModelMiXin(models.Model):
    """
        创建时间和修改时间的拓展类(为了不在models里重复写同样的功能就下个拓展类，要用直接拿就行)
    """
    create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
    update_time = models.DateTimeField(auto_now=True, verbose_name='更新时间')

    #因为该类是继承models.Model映射时会生成一个表，为了只用里面的字段且不生成此表，就需要定义此类为抽象类，抽象类不会生成表
    class Meta:
        abstract = True  #指定该类为抽象类，迁移映射时不会生成数据表

class IsDeleteModelMiXin(models.Model):
    """
        逻辑删除拓展类
    """

    is_delete = models.BooleanField(default=False, verbose_name='逻辑删除')

    # 逻辑删除
    def delete(self, using=None, keep_parents=False):  # 逻辑删除
        self.is_delete = True
        self.save()

    class Meta:
        abstract = True  # 指定该类为抽象类，迁移映射时不会生成数据表

class ModelSetMiXin(DateTimeModelMiXin,IsDeleteModelMiXin): #集成类，要用设置三个字段时不用写，直接继承此类即可
    """
        模型拓展类的整合
    """
    #不能直接写pass
    class Meta:
        abstract = True  # 指定该类为抽象类，迁移映射时不会生成数据表
